unit EspelhoMFD;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, ComCtrls;

type
  TFormEspelho = class(TForm)
    GroupBox1: TGroupBox;
    RB_Data: TRadioButton;
    RB_COO: TRadioButton;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    Bt1: TButton;
    BT4: TButton;
    StatusBar1: TStatusBar;
    procedure RB_DataClick(Sender: TObject);
    procedure RB_COOClick(Sender: TObject);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure MaskEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure MaskEdit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Bt1Click(Sender: TObject);
    procedure BT4Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
    procedure EspelhoHourGlass;
    procedure EspelhoDefault;
    procedure Aguarde;
  public
    { Public declarations }
  end;

var
  FormEspelho: TFormEspelho;

implementation

uses Principal, declaracoes, funcoesapoio;

{$R *.dfm}

procedure TFormEspelho.RB_DataClick(Sender: TObject);
begin
        MaskEdit1.EditMask := '99/99/9999;1;_';
        MaskEdit2.EditMask := '99/99/9999;1;_';
        MaskEdit1.Clear; MaskEdit2.Clear;

end;

procedure TFormEspelho.RB_COOClick(Sender: TObject);
begin
        MaskEdit1.EditMask := '999999;1;_';
        MaskEdit2.EditMask := '999999;1;_';
        MaskEdit1.Clear; MaskEdit2.Clear;

end;

procedure TFormEspelho.MaskEdit1Exit(Sender: TObject);
var coo: Integer;
begin
        if RB_Data.Checked then
        begin
                try
                        StrToDate(MaskEdit1.Text)
                except
                        ShowMessage('Data inválida!');
                        MaskEdit1.SetFocus;
                end;
        end
        else if RB_COO.Checked then
        begin
                try
                        COO := StrToInt(Trim(MaskEdit1.Text));
                        MaskEdit1.Text := FormatFloat(StringOfChar('0', 6), COO);
                except
                        MaskEdit1.Text:='000001';
                end;
        end;

end;
procedure TFormEspelho.MaskEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if Key = VK_RETURN then MaskEdit2.SetFocus;

end;

procedure TFormEspelho.MaskEdit2Exit(Sender: TObject);
var coo: Integer;
begin
        if RB_Data.Checked then
        begin
                try
                        StrToDate(MaskEdit2.Text)
                except
                        ShowMessage('Data inválida!');
                        MaskEdit2.SetFocus;
                end;
        end
        else if RB_COO.Checked then
        begin
                try
                        COO := StrToInt(Trim(MaskEdit2.Text));
                        MaskEdit2.Text := FormatFloat(StringOfChar('0', 6), COO);
                except
                        MaskEdit2.Text:='000001';
                end;
        end;

end;

procedure TFormEspelho.MaskEdit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
        if Key = VK_RETURN then BT1.SetFocus;

end;

procedure TFormEspelho.Bt1Click(Sender: TObject);
var Arquivo:TextFile;
    TipoDownload:Char;
    nomearq:String;
    parametro1, parametro2:String;
begin
        Aguarde;
        LimpaMensagem2;
        // Leitura da MFD por Data ou Leitura da MFD por COO
        if RB_Data.Checked or RB_COO.Checked  then
        begin
                if RB_Data.Checked then begin
                        if FormPrincipal.ArqMFD='E'then FormPrincipal.Statusbar1.Panels[0].Text:='Espelho MFD - Data'
                        else FormPrincipal.Statusbar1.Panels[0].Text:='Arq.MFD - Data';
                        TipoDownload:='1';
                        parametro1:=MaskEdit1.Text;
                        parametro2:=MaskEdit2.Text;
                end
                else begin
                        if FormPrincipal.ArqMFD='E'then FormPrincipal.Statusbar1.Panels[0].Text:='Espelho MFD - COO'
                        else FormPrincipal.Statusbar1.Panels[0].Text:='Arq.MFD - COO';
                        parametro1:='0'+MaskEdit1.Text;
                        parametro2:='0'+MaskEdit2.Text;
                        TipoDownload:='2';

                end;
                // Geração do Espelho MFD Requisito VII 5
                if FormPrincipal.ArqMFD='E' then begin
                        parametro1:=MaskEdit1.Text;
                        parametro2:=MaskEdit2.Text;
                        nomearq:='C:\SWEDA\ESPELHO.TXT';
                        Resposta:=ECF_DownloadMFD(nomearq,TipoDownload,parametro1, parametro2,'1'); WaitProcess;
                end
                // Geração do Arq. Cotepe Requisito VII 6
                else begin
                        nomearq:='C:\SWEDA\SAIDA.TXT';
                        Resposta:=ECF_ReproduzirMemoriaFiscalMFD('2',parametro1, parametro2,nomearq,''); WaitProcess;
                end;
                if resposta=-3 then
                begin
                         FormPrincipal.StatusBar1.Panels[1].Text:='Comando executado com sucesso.';
                         StatusBar1.Panels[0].Text:='Não existe movimento para o período selecionado.';
                end
                else begin
                        if resposta=1 then StatusBar1.Panels[0].Text:='Arquivo gerado '+nomearq
                        else StatusBar1.Panels[0].Text:=' ';
                        VerificaRetornoFuncao(Resposta);

                end;

        end;

        // NESTE PONTO SERÁ NECESSÁRIO INCLUIR A ASSINATURA DA SOFTWARE HOUSE
        // REGISTRO EAD
        If FileExists(nomearq) then
        begin
                AssignFile(Arquivo,nomearq);
                Append(Arquivo);
                Write(Arquivo,'EAD - Inserir a Assinatura Digital da Software House');
                CloseFile(Arquivo);
        end;
        EspelhoDefault;
end;

procedure TFormEspelho.BT4Click(Sender: TObject);
begin
        Close;
end;

procedure TFormEspelho.EspelhoHourGlass;
begin
        FormEspelho.Cursor:=crHourGlass;
        GroupBox1.Cursor:=crHourGlass;
        GroupBox2.Cursor:=crHourGlass;
        bt1.Cursor:=crHourGlass;
        bt4.Cursor:=crHourGlass;
end;

procedure TFormEspelho.EspelhoDefault;
begin
        FormEspelho.Cursor:=crDefault;
        GroupBox1.Cursor:=crDefault;
        GroupBox2.Cursor:=crDefault;
        bt1.Cursor:=crDefault;
        bt4.Cursor:=crDefault;
end;
procedure TFormEspelho.FormActivate(Sender: TObject);
begin
        StatusBar1.Panels[0].Text:='';
        if FormPrincipal.ArqMFD='E' then begin
                 bt1.Caption:='Arquivo Eletrônico Espelho';
                FormEspelho.caption:='Espelho MFD'
        end
        else begin
                 bt1.Caption:='Arquivo Eletrônico COTEPE';
                FormEspelho.Caption:='Arq.MFD';
        end;
end;
procedure TFormEspelho.Aguarde;
begin
        FormPrincipal.StatusBar1.Panels[1].Text:='Aguarde...';
        StatusBar1.Panels[0].Text:='Aguarde...'; Refresh;
        EspelhoHourGlass;
end;

end.
